From: Florian Müllner Date: Fri, 5 Jul 2019 15:52:37 +0000 (+0200) Subject: tests: Add Params.parse() unit tests X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~845^2^2~68 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=1778adae0d029a53e35c219098def8382040711c;p=gnome-shell.git tests: Add Params.parse() unit tests Commit 46874eed0 accidentally changed the behavior of the function in an incompatible way. Before addressing the actual issue, add a reproducer to the unit tests to hopefully prevent future breakage. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/615 --- diff --git a/tests/meson.build b/tests/meson.build index a6726f7bc..1e84f423c 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -10,7 +10,7 @@ run_test = configure_file( testenv = environment() testenv.set('GSETTINGS_SCHEMA_DIR', join_paths(meson.build_root(), 'data')) -foreach test : ['insertSorted', 'jsParse', 'markup', 'url'] +foreach test : ['insertSorted', 'jsParse', 'markup', 'params', 'url'] test(test, run_test, args: 'unit/@0@.js'.format(test), env: testenv, diff --git a/tests/unit/params.js b/tests/unit/params.js new file mode 100644 index 000000000..6ac4cc10c --- /dev/null +++ b/tests/unit/params.js @@ -0,0 +1,32 @@ +const JsUnit = imports.jsUnit; +const Params = imports.misc.params; + +function assertParamsEqual(params, expected) { + for (let p in params) { + JsUnit.assertTrue(p in expected); + JsUnit.assertEquals(params[p], expected[p]); + } +} + +let defaults = { + foo: 'This is a test', + bar: null, + baz: 42 +}; + +assertParamsEqual( + Params.parse(null, defaults), + defaults); + +assertParamsEqual( + Params.parse({ bar: 23 }, defaults), + { foo: 'This is a test', bar: 23, baz: 42 }); + +JsUnit.assertRaises( + () => { + Params.parse({ extraArg: 'quz' }, defaults); + }); + +assertParamsEqual( + Params.parse({ extraArg: 'quz' }, defaults, true), + { foo: 'This is a test', bar: null, baz: 42, extraArg: 'quz' });